]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
st/theme-node: Add missing precondition checks
authorFlorian Müllner <fmuellner@gnome.org>
Tue, 22 Feb 2022 10:32:26 +0000 (11:32 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 22 Feb 2022 11:43:06 +0000 (12:43 +0100)
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4851

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2207>

src/st/st-theme-node.c

index 038be2f2e1589924a5ecd3ded8006eca26a68d25..e6fb80b11de758642bed524082c0dbb285d55c15 100644 (file)
@@ -408,7 +408,11 @@ st_theme_node_equal (StThemeNode *node_a, StThemeNode *node_b)
 guint
 st_theme_node_hash (StThemeNode *node)
 {
-  guint hash = GPOINTER_TO_UINT (node->parent_node);
+  guint hash;
+
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), 0);
+
+  hash = GPOINTER_TO_UINT (node->parent_node);
 
   hash = hash * 33 + GPOINTER_TO_UINT (node->context);
   hash = hash * 33 + GPOINTER_TO_UINT (node->theme);
@@ -671,6 +675,9 @@ st_theme_node_lookup_color (StThemeNode  *node,
 
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -761,6 +768,9 @@ st_theme_node_lookup_double (StThemeNode *node,
   gboolean result = FALSE;
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -814,6 +824,9 @@ st_theme_node_lookup_time (StThemeNode *node,
   gboolean result = FALSE;
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -906,6 +919,9 @@ st_theme_node_lookup_url (StThemeNode  *node,
   gboolean result = FALSE;
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -1200,7 +1216,13 @@ st_theme_node_lookup_length (StThemeNode *node,
                              gboolean     inherit,
                              gdouble     *length)
 {
-  GetFromTermResult result = get_length_internal (node, property_name, length);
+  GetFromTermResult result;
+
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
+  result = get_length_internal (node, property_name, length);
+
   if (result == VALUE_FOUND)
     return TRUE;
   else if (result == VALUE_INHERIT)
@@ -2457,6 +2479,8 @@ st_theme_node_get_icon_style (StThemeNode *node)
 {
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), ST_ICON_STYLE_REQUESTED);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -2507,6 +2531,8 @@ st_theme_node_get_text_decoration (StThemeNode *node)
 {
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), 0);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -2582,6 +2608,8 @@ st_theme_node_get_text_align(StThemeNode *node)
 {
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE(node), ST_TEXT_ALIGN_LEFT);
+
   ensure_properties(node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -2927,6 +2955,8 @@ st_theme_node_get_font (StThemeNode *node)
   double size = 0.;
   gboolean size_set = FALSE;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   char *family = NULL;
   double parent_size;
   int i;
@@ -3119,6 +3149,8 @@ st_theme_node_get_font_features (StThemeNode *node)
 {
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -3161,6 +3193,8 @@ st_theme_node_get_border_image (StThemeNode *node)
 {
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   if (node->border_image_computed)
     return node->border_image;
 
@@ -3298,6 +3332,9 @@ double
 st_theme_node_get_horizontal_padding (StThemeNode *node)
 {
   double padding = 0.0;
+
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), padding);
+
   padding += st_theme_node_get_padding (node, ST_SIDE_LEFT);
   padding += st_theme_node_get_padding (node, ST_SIDE_RIGHT);
 
@@ -3316,6 +3353,9 @@ double
 st_theme_node_get_vertical_padding (StThemeNode *node)
 {
   double padding = 0.0;
+
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), padding);
+
   padding += st_theme_node_get_padding (node, ST_SIDE_TOP);
   padding += st_theme_node_get_padding (node, ST_SIDE_BOTTOM);
 
@@ -3493,6 +3533,9 @@ st_theme_node_lookup_shadow (StThemeNode  *node,
 
   int i;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), FALSE);
+  g_return_val_if_fail (property_name != NULL, FALSE);
+
   ensure_properties (node);
 
   for (i = node->n_properties - 1; i >= 0; i--)
@@ -3587,6 +3630,8 @@ st_theme_node_get_box_shadow (StThemeNode *node)
 {
   StShadow *shadow;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   if (node->box_shadow_computed)
     return node->box_shadow;
 
@@ -3620,6 +3665,8 @@ st_theme_node_get_background_image_shadow (StThemeNode *node)
 {
   StShadow *shadow;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   if (node->background_image_shadow_computed)
     return node->background_image_shadow;
 
@@ -3661,6 +3708,8 @@ st_theme_node_get_text_shadow (StThemeNode *node)
 {
   StShadow *result = NULL;
 
+  g_return_val_if_fail (ST_IS_THEME_NODE (node), NULL);
+
   if (node->text_shadow_computed)
     return node->text_shadow;